package com.joinlabs.mapper;

import com.joinlabs.entity.CarProduct;
import com.joinlabs.entity.ShopcarItem;
import com.joinlabs.entity.ShopcarItemPro;

import java.math.BigDecimal;
import java.util.List;

import org.apache.ibatis.annotations.Param;

public interface ShopcarMapper {
	
	/**
	 *  通过购物车编号查询子项
	 */
	List<ShopcarItem> findShopcarItemsByCid(BigDecimal[] Cid);
	
	/**
	 *	通过购物车编号删除购物车子项						已实现
	 * @param carId 购物车编号
	 * @return
	 */
    int deleteByPrimaryKey(BigDecimal carId);
    
    /**
     * 	生成购物车子项									已实现
     * @param shopcarItem 购物车子项
     * @return
     */
    int insert(ShopcarItem shopcarItem);
    
    /**
     *	通过用户查询购物车中的商品							已实现
     * @param userId 用户Id
     * @return
     */
    List<ShopcarItemPro> findShopcarItemsByUserId(@Param("userId") String userId);
    
    /**
     * 	增加购物车子项商品数量								已实现
     * @param carId 购物车编号
     */
    void plusCountByCarId(@Param("carId") BigDecimal carId);
    
    /**
     * 	减少购物车子项商品数量								已实现
     * @param carId 购物车编号
     */
    void minusCountByCarId(@Param("carId") BigDecimal carId);
    
    /**
     * 	通过购物车子项id 删除下完单的购物车子项(订单操作)	已实现
     * @param carIds 购物车编号数组
     * @param userId 用户Id
     */
    void delShopcarItemsByIds(BigDecimal[] carIds);
    
    /**
     * 	通过购物车id 进行库存减少(下单操作)				已实现
     * @param waresId 商品Id
     * @param waresCount 商品下单数量
     */
    void delWaresCountById(@Param("waresId") BigDecimal waresId,@Param("waresCount") Long waresCount);
    
    /**
     * 	推荐商品											已实现但要改
     * @return
     */
    List<CarProduct> findRecommendWares();

    int insertSelective(ShopcarItemPro shopcarItemPro);

    ShopcarItemPro selectByPrimaryKey(BigDecimal carId);

    int updateByPrimaryKeySelective(ShopcarItemPro shopcarItemPro);

    int updateByPrimaryKey(ShopcarItemPro shopcarItemPro);
}